﻿#region SOURCE INFORMATION

//  COPYRIGHT LICENCE
//  
//   Copyright (c) 2011, D.E.M.O.N Organization
//   All rights reserved.
//  
//   Redistribution and use in source and binary forms, with or without modification,
//   are permitted provided that the following conditions are met:
//  
//       * Redistributions of source code must retain the above copyright notice,
//       this list of conditions and the following disclaimer.
//       * Redistributions in binary form must reproduce the above copyright notice,
//       this list of conditions and the following disclaimer in the documentation
//       and/or other materials provided with the distribution.
//       * Neither D.E.M.O.N Organization nor its contributors
//       may be used to endorse or promote products derived from this
//       software without specific prior written permission.
//  
//   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
//   ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
//   WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
//   DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
//   FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
//   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
//   SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
//   CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
//   OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
//   THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//  
//  
//  
//  CODE DESCRIPTION
//  
//         Created by Raistlin.K @ D.E.M.O.N at  10:33 AM  11/03/2012 .
//         E-Mail:                         DemonVK@Gmail.com
//  
//         Project Name:                   TweakerTest
//         Module  Name:                   frmMain.cs
//         Part Of:                        MySQLTweaker
//         Last Change Date:              7:20 PM 13/03/2012

#endregion

#region

using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Windows.Forms;
using MySQLTweaker;
using TweakerTest.Properties;

#endregion

namespace TweakerTest
{
    public partial class frmMain : Form
    {
        private readonly BackgroundWorker igbWorker = new BackgroundWorker();

        public frmMain()
        {
            InitializeComponent();
        }

        private void cmdConfig_Click(object sender, EventArgs e)
        {
            var p = new Process
                        {
                            StartInfo =
                                {
                                    WindowStyle = ProcessWindowStyle.Normal,
                                    Arguments = Application.StartupPath + "\\core\\bin\\my.ini",
                                    //CreateNoWindow = true,
                                    FileName = "notepad.exe"
                                }
                        };
            try
            {
                p.Start();
            }
            finally
            {
                p.Close();
            }
        }

        private void cmdGetVer_Click(object sender, EventArgs e)
        {
            MessageBox.Show(Installer.GetMySQLVer(), Application.ProductName, MessageBoxButtons.OK);
        }

        private void igbWorker_DoWork(object sender, DoWorkEventArgs e)
        {

            var iType = rbFull.Checked ? Installer.InstallType.Full : Installer.InstallType.Tiny;
            Installer.InstallMySQL(Application.StartupPath + "\\core", iType,
                                   iComplete =>
                                   MessageBox.Show(Resources.frmMain_igbWorker_DoWork_Install_Finished_,
                                                   Application.ProductName,
                                                   MessageBoxButtons.OK),
                                   iException => MessageBox
                                                     .
                                                     Show
                                                     (Resources.frmMain_igbWorker_DoWork_Error___ + iException.Message,
                                                      Application.ProductName,
                                                      MessageBoxButtons.OK));
        }

        private void igbWorker_Completed(object sender, RunWorkerCompletedEventArgs e)
        {
            cmdInstall.Enabled = true;
            picLoad.Visible = false;
        }

        private void cmdInstall_Click(object sender, EventArgs e)
        {
            cmdInstall.Enabled = false;
            igbWorker.WorkerReportsProgress = false;
            igbWorker.WorkerSupportsCancellation = false;
            igbWorker.DoWork += igbWorker_DoWork;
            igbWorker.RunWorkerCompleted += igbWorker_Completed;
            igbWorker.RunWorkerAsync();

            picLoad.Visible = true;
        }

        private void cmdStart_Click(object sender, EventArgs e)
        {
            if (Controller.RunMySql(Application.StartupPath + "\\core"))
            {
                MessageBox.Show(Resources.frmMain_cmdStart_Click_Start_MySQL_OK_, Application.ProductName,
                                MessageBoxButtons.OK);
            }
        }

        private void cmdStop_Click(object sender, EventArgs e)
        {
            if (Controller.StopMySql(Application.StartupPath + "\\core", "9998"))
            {
                MessageBox.Show(Resources.frmMain_cmdStop_Click_Stop_MySQL_OK_, Application.ProductName,
                                MessageBoxButtons.OK);
            }
        }
    }
}